public class Solution {
    public static void main(String[] args) {
        Solution s = new Solution();
        System.out.println(s.longestCommonPrefix(new String[]{"car", "cargo", "calculate", "cat"}));
    }

    public String longestCommonPrefix1(String[] strs) {
        /**
         * 最长公共前缀-暴力解法（两两比较）*/
        // 1 预处理
        int n = strs.length;

        // 2 主逻辑
        String maxPrefix = strs[0];
        for(String e: strs) {
            // -求最短相同公共头部
            int i = 0;
            while(i < Math.min(e.length(), maxPrefix.length())) {
                if(e.charAt(i) != maxPrefix.charAt(i)) {
                    break;
                }
                i ++;
            }
            maxPrefix = e.substring(0, i);
        }

        // 3 返回值
        return maxPrefix;
    }

    public String longestCommonPrefix(String[] strs) {
        /**
         * 最长公共前缀-暴力解法
         * 主要判断越界 和 字符不相等的情况*/
        // 1 预处理
        int n = strs.length;

        // 2 主逻辑
        int i = 0;
        while(true) {
            // -记录本轮字符
            if(strs[0].length() <= i) {
                return strs[0].substring(0, i);
            }
            char cur = strs[0].charAt(i);
            for(String e: strs) {
                if(e.length() <= i || e.charAt(i) != cur) {
                    return strs[0].substring(0, i);
                }
            }
            i++;
        }
    }
}
